llSetPrimitiveParams correct prim hollow for cases where limit should be 70%.
Signed-off-by: BlueWall <jamesh@bluewallgroup.com>bulletsim
parent
cf3ffe5bb4
commit
cf42fcd978
|
@ -6608,7 +6608,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
return Util.SHA1Hash(src).ToLower();
|
return Util.SHA1Hash(src).ToLower();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected ObjectShapePacket.ObjectDataBlock SetPrimitiveBlockShapeParams(SceneObjectPart part, int holeshape, LSL_Vector cut, float hollow, LSL_Vector twist)
|
protected ObjectShapePacket.ObjectDataBlock SetPrimitiveBlockShapeParams(SceneObjectPart part, int holeshape, LSL_Vector cut, float hollow, LSL_Vector twist, byte profileshape, byte pathcurve)
|
||||||
{
|
{
|
||||||
ObjectShapePacket.ObjectDataBlock shapeBlock = new ObjectShapePacket.ObjectDataBlock();
|
ObjectShapePacket.ObjectDataBlock shapeBlock = new ObjectShapePacket.ObjectDataBlock();
|
||||||
|
|
||||||
|
@ -6619,7 +6619,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
{
|
{
|
||||||
holeshape = (int)ScriptBaseClass.PRIM_HOLE_DEFAULT;
|
holeshape = (int)ScriptBaseClass.PRIM_HOLE_DEFAULT;
|
||||||
}
|
}
|
||||||
shapeBlock.ProfileCurve = (byte)holeshape;
|
shapeBlock.PathCurve = pathcurve;
|
||||||
|
shapeBlock.ProfileCurve = (byte)holeshape; // Set the hole shape.
|
||||||
|
shapeBlock.ProfileCurve += profileshape; // Add in the profile shape.
|
||||||
if (cut.x < 0f)
|
if (cut.x < 0f)
|
||||||
{
|
{
|
||||||
cut.x = 0f;
|
cut.x = 0f;
|
||||||
|
@ -6651,9 +6653,26 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
{
|
{
|
||||||
hollow = 0f;
|
hollow = 0f;
|
||||||
}
|
}
|
||||||
if (hollow > 0.95)
|
// If the prim is a Cylinder, Prism, Sphere, Torus or Ring (or not a
|
||||||
|
// Box or Tube) and the hole shape is a square, hollow is limited to
|
||||||
|
// a max of 70%. The viewer performs its own check on this value but
|
||||||
|
// we need to do it here also so llGetPrimitiveParams can have access
|
||||||
|
// to the correct value.
|
||||||
|
if (profileshape != (byte)ProfileCurve.Square &&
|
||||||
|
holeshape == (int)ScriptBaseClass.PRIM_HOLE_SQUARE)
|
||||||
{
|
{
|
||||||
hollow = 0.95f;
|
if (hollow > 0.70f)
|
||||||
|
{
|
||||||
|
hollow = 0.70f;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Otherwise, hollow is limited to 95%.
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (hollow > 0.95f)
|
||||||
|
{
|
||||||
|
hollow = 0.95f;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
shapeBlock.ProfileHollow = (ushort)(50000 * hollow);
|
shapeBlock.ProfileHollow = (ushort)(50000 * hollow);
|
||||||
if (twist.x < -1.0f)
|
if (twist.x < -1.0f)
|
||||||
|
@ -6677,20 +6696,16 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
|
|
||||||
shapeBlock.ObjectLocalID = part.LocalId;
|
shapeBlock.ObjectLocalID = part.LocalId;
|
||||||
|
|
||||||
// retain pathcurve
|
|
||||||
shapeBlock.PathCurve = part.Shape.PathCurve;
|
|
||||||
|
|
||||||
part.Shape.SculptEntry = false;
|
part.Shape.SculptEntry = false;
|
||||||
return shapeBlock;
|
return shapeBlock;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void SetPrimitiveShapeParams(SceneObjectPart part, int holeshape, LSL_Vector cut, float hollow, LSL_Vector twist, LSL_Vector taper_b, LSL_Vector topshear, byte fudge)
|
// Prim type box, cylinder and prism.
|
||||||
|
protected void SetPrimitiveShapeParams(SceneObjectPart part, int holeshape, LSL_Vector cut, float hollow, LSL_Vector twist, LSL_Vector taper_b, LSL_Vector topshear, byte profileshape, byte pathcurve)
|
||||||
{
|
{
|
||||||
ObjectShapePacket.ObjectDataBlock shapeBlock;
|
ObjectShapePacket.ObjectDataBlock shapeBlock;
|
||||||
|
|
||||||
shapeBlock = SetPrimitiveBlockShapeParams(part, holeshape, cut, hollow, twist);
|
shapeBlock = SetPrimitiveBlockShapeParams(part, holeshape, cut, hollow, twist, profileshape, pathcurve);
|
||||||
|
|
||||||
shapeBlock.ProfileCurve += fudge;
|
|
||||||
|
|
||||||
if (taper_b.x < 0f)
|
if (taper_b.x < 0f)
|
||||||
{
|
{
|
||||||
|
@ -6733,18 +6748,17 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
part.UpdateShape(shapeBlock);
|
part.UpdateShape(shapeBlock);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void SetPrimitiveShapeParams(SceneObjectPart part, int holeshape, LSL_Vector cut, float hollow, LSL_Vector twist, LSL_Vector dimple, byte fudge)
|
// Prim type sphere.
|
||||||
|
protected void SetPrimitiveShapeParams(SceneObjectPart part, int holeshape, LSL_Vector cut, float hollow, LSL_Vector twist, LSL_Vector dimple, byte profileshape, byte pathcurve)
|
||||||
{
|
{
|
||||||
ObjectShapePacket.ObjectDataBlock shapeBlock;
|
ObjectShapePacket.ObjectDataBlock shapeBlock;
|
||||||
|
|
||||||
shapeBlock = SetPrimitiveBlockShapeParams(part, holeshape, cut, hollow, twist);
|
shapeBlock = SetPrimitiveBlockShapeParams(part, holeshape, cut, hollow, twist, profileshape, pathcurve);
|
||||||
|
|
||||||
// profile/path swapped for a sphere
|
// profile/path swapped for a sphere
|
||||||
shapeBlock.PathBegin = shapeBlock.ProfileBegin;
|
shapeBlock.PathBegin = shapeBlock.ProfileBegin;
|
||||||
shapeBlock.PathEnd = shapeBlock.ProfileEnd;
|
shapeBlock.PathEnd = shapeBlock.ProfileEnd;
|
||||||
|
|
||||||
shapeBlock.ProfileCurve += fudge;
|
|
||||||
|
|
||||||
shapeBlock.PathScaleX = 100;
|
shapeBlock.PathScaleX = 100;
|
||||||
shapeBlock.PathScaleY = 100;
|
shapeBlock.PathScaleY = 100;
|
||||||
|
|
||||||
|
@ -6775,13 +6789,12 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
part.UpdateShape(shapeBlock);
|
part.UpdateShape(shapeBlock);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void SetPrimitiveShapeParams(SceneObjectPart part, int holeshape, LSL_Vector cut, float hollow, LSL_Vector twist, LSL_Vector holesize, LSL_Vector topshear, LSL_Vector profilecut, LSL_Vector taper_a, float revolutions, float radiusoffset, float skew, byte fudge)
|
// Prim type torus, tube and ring.
|
||||||
|
protected void SetPrimitiveShapeParams(SceneObjectPart part, int holeshape, LSL_Vector cut, float hollow, LSL_Vector twist, LSL_Vector holesize, LSL_Vector topshear, LSL_Vector profilecut, LSL_Vector taper_a, float revolutions, float radiusoffset, float skew, byte profileshape, byte pathcurve)
|
||||||
{
|
{
|
||||||
ObjectShapePacket.ObjectDataBlock shapeBlock;
|
ObjectShapePacket.ObjectDataBlock shapeBlock;
|
||||||
|
|
||||||
shapeBlock = SetPrimitiveBlockShapeParams(part, holeshape, cut, hollow, twist);
|
shapeBlock = SetPrimitiveBlockShapeParams(part, holeshape, cut, hollow, twist, profileshape, pathcurve);
|
||||||
|
|
||||||
shapeBlock.ProfileCurve += fudge;
|
|
||||||
|
|
||||||
// profile/path swapped for a torrus, tube, ring
|
// profile/path swapped for a torrus, tube, ring
|
||||||
shapeBlock.PathBegin = shapeBlock.ProfileBegin;
|
shapeBlock.PathBegin = shapeBlock.ProfileBegin;
|
||||||
|
@ -6901,7 +6914,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
part.UpdateShape(shapeBlock);
|
part.UpdateShape(shapeBlock);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void SetPrimitiveShapeParams(SceneObjectPart part, string map, int type)
|
// Prim type sculpt.
|
||||||
|
protected void SetPrimitiveShapeParams(SceneObjectPart part, string map, int type, byte pathcurve)
|
||||||
{
|
{
|
||||||
ObjectShapePacket.ObjectDataBlock shapeBlock = new ObjectShapePacket.ObjectDataBlock();
|
ObjectShapePacket.ObjectDataBlock shapeBlock = new ObjectShapePacket.ObjectDataBlock();
|
||||||
UUID sculptId;
|
UUID sculptId;
|
||||||
|
@ -6914,6 +6928,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
if (sculptId == UUID.Zero)
|
if (sculptId == UUID.Zero)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
shapeBlock.PathCurve = pathcurve;
|
||||||
shapeBlock.ObjectLocalID = part.LocalId;
|
shapeBlock.ObjectLocalID = part.LocalId;
|
||||||
shapeBlock.PathScaleX = 100;
|
shapeBlock.PathScaleX = 100;
|
||||||
shapeBlock.PathScaleY = 150;
|
shapeBlock.PathScaleY = 150;
|
||||||
|
@ -6927,9 +6942,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
type = (int)ScriptBaseClass.PRIM_SCULPT_TYPE_SPHERE;
|
type = (int)ScriptBaseClass.PRIM_SCULPT_TYPE_SPHERE;
|
||||||
}
|
}
|
||||||
|
|
||||||
// retain pathcurve
|
|
||||||
shapeBlock.PathCurve = part.Shape.PathCurve;
|
|
||||||
|
|
||||||
part.Shape.SetSculptProperties((byte)type, sculptId);
|
part.Shape.SetSculptProperties((byte)type, sculptId);
|
||||||
part.Shape.SculptEntry = true;
|
part.Shape.SculptEntry = true;
|
||||||
part.UpdateShape(shapeBlock);
|
part.UpdateShape(shapeBlock);
|
||||||
|
@ -7053,8 +7065,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
taper_b = rules.GetVector3Item(idx++);
|
taper_b = rules.GetVector3Item(idx++);
|
||||||
topshear = rules.GetVector3Item(idx++);
|
topshear = rules.GetVector3Item(idx++);
|
||||||
|
|
||||||
part.Shape.PathCurve = (byte)Extrusion.Straight;
|
SetPrimitiveShapeParams(part, face, v, hollow, twist, taper_b, topshear,
|
||||||
SetPrimitiveShapeParams(part, face, v, hollow, twist, taper_b, topshear, 1);
|
(byte)ProfileShape.Square, (byte)Extrusion.Straight);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case (int)ScriptBaseClass.PRIM_TYPE_CYLINDER:
|
case (int)ScriptBaseClass.PRIM_TYPE_CYLINDER:
|
||||||
|
@ -7067,9 +7079,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
twist = rules.GetVector3Item(idx++);
|
twist = rules.GetVector3Item(idx++);
|
||||||
taper_b = rules.GetVector3Item(idx++);
|
taper_b = rules.GetVector3Item(idx++);
|
||||||
topshear = rules.GetVector3Item(idx++);
|
topshear = rules.GetVector3Item(idx++);
|
||||||
part.Shape.ProfileShape = ProfileShape.Circle;
|
SetPrimitiveShapeParams(part, face, v, hollow, twist, taper_b, topshear,
|
||||||
part.Shape.PathCurve = (byte)Extrusion.Straight;
|
(byte)ProfileShape.Circle, (byte)Extrusion.Straight);
|
||||||
SetPrimitiveShapeParams(part, face, v, hollow, twist, taper_b, topshear, 0);
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case (int)ScriptBaseClass.PRIM_TYPE_PRISM:
|
case (int)ScriptBaseClass.PRIM_TYPE_PRISM:
|
||||||
|
@ -7082,8 +7093,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
twist = rules.GetVector3Item(idx++);
|
twist = rules.GetVector3Item(idx++);
|
||||||
taper_b = rules.GetVector3Item(idx++);
|
taper_b = rules.GetVector3Item(idx++);
|
||||||
topshear = rules.GetVector3Item(idx++);
|
topshear = rules.GetVector3Item(idx++);
|
||||||
part.Shape.PathCurve = (byte)Extrusion.Straight;
|
SetPrimitiveShapeParams(part, face, v, hollow, twist, taper_b, topshear,
|
||||||
SetPrimitiveShapeParams(part, face, v, hollow, twist, taper_b, topshear, 3);
|
(byte)ProfileShape.EquilateralTriangle, (byte)Extrusion.Straight);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case (int)ScriptBaseClass.PRIM_TYPE_SPHERE:
|
case (int)ScriptBaseClass.PRIM_TYPE_SPHERE:
|
||||||
|
@ -7095,8 +7106,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
hollow = (float)rules.GetLSLFloatItem(idx++);
|
hollow = (float)rules.GetLSLFloatItem(idx++);
|
||||||
twist = rules.GetVector3Item(idx++);
|
twist = rules.GetVector3Item(idx++);
|
||||||
taper_b = rules.GetVector3Item(idx++); // dimple
|
taper_b = rules.GetVector3Item(idx++); // dimple
|
||||||
part.Shape.PathCurve = (byte)Extrusion.Curve1;
|
SetPrimitiveShapeParams(part, face, v, hollow, twist, taper_b,
|
||||||
SetPrimitiveShapeParams(part, face, v, hollow, twist, taper_b, 5);
|
(byte)ProfileShape.HalfCircle, (byte)Extrusion.Curve1);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case (int)ScriptBaseClass.PRIM_TYPE_TORUS:
|
case (int)ScriptBaseClass.PRIM_TYPE_TORUS:
|
||||||
|
@ -7114,9 +7125,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
revolutions = (float)rules.GetLSLFloatItem(idx++);
|
revolutions = (float)rules.GetLSLFloatItem(idx++);
|
||||||
radiusoffset = (float)rules.GetLSLFloatItem(idx++);
|
radiusoffset = (float)rules.GetLSLFloatItem(idx++);
|
||||||
skew = (float)rules.GetLSLFloatItem(idx++);
|
skew = (float)rules.GetLSLFloatItem(idx++);
|
||||||
part.Shape.PathCurve = (byte)Extrusion.Curve1;
|
|
||||||
SetPrimitiveShapeParams(part, face, v, hollow, twist, holesize, topshear, profilecut, taper_b,
|
SetPrimitiveShapeParams(part, face, v, hollow, twist, holesize, topshear, profilecut, taper_b,
|
||||||
revolutions, radiusoffset, skew, 0);
|
revolutions, radiusoffset, skew, (byte)ProfileShape.Circle, (byte)Extrusion.Curve1);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case (int)ScriptBaseClass.PRIM_TYPE_TUBE:
|
case (int)ScriptBaseClass.PRIM_TYPE_TUBE:
|
||||||
|
@ -7134,9 +7144,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
revolutions = (float)rules.GetLSLFloatItem(idx++);
|
revolutions = (float)rules.GetLSLFloatItem(idx++);
|
||||||
radiusoffset = (float)rules.GetLSLFloatItem(idx++);
|
radiusoffset = (float)rules.GetLSLFloatItem(idx++);
|
||||||
skew = (float)rules.GetLSLFloatItem(idx++);
|
skew = (float)rules.GetLSLFloatItem(idx++);
|
||||||
part.Shape.PathCurve = (byte)Extrusion.Curve1;
|
|
||||||
SetPrimitiveShapeParams(part, face, v, hollow, twist, holesize, topshear, profilecut, taper_b,
|
SetPrimitiveShapeParams(part, face, v, hollow, twist, holesize, topshear, profilecut, taper_b,
|
||||||
revolutions, radiusoffset, skew, 1);
|
revolutions, radiusoffset, skew, (byte)ProfileShape.Square, (byte)Extrusion.Curve1);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case (int)ScriptBaseClass.PRIM_TYPE_RING:
|
case (int)ScriptBaseClass.PRIM_TYPE_RING:
|
||||||
|
@ -7154,9 +7163,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
revolutions = (float)rules.GetLSLFloatItem(idx++);
|
revolutions = (float)rules.GetLSLFloatItem(idx++);
|
||||||
radiusoffset = (float)rules.GetLSLFloatItem(idx++);
|
radiusoffset = (float)rules.GetLSLFloatItem(idx++);
|
||||||
skew = (float)rules.GetLSLFloatItem(idx++);
|
skew = (float)rules.GetLSLFloatItem(idx++);
|
||||||
part.Shape.PathCurve = (byte)Extrusion.Curve1;
|
|
||||||
SetPrimitiveShapeParams(part, face, v, hollow, twist, holesize, topshear, profilecut, taper_b,
|
SetPrimitiveShapeParams(part, face, v, hollow, twist, holesize, topshear, profilecut, taper_b,
|
||||||
revolutions, radiusoffset, skew, 3);
|
revolutions, radiusoffset, skew, (byte)ProfileShape.EquilateralTriangle, (byte)Extrusion.Curve1);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case (int)ScriptBaseClass.PRIM_TYPE_SCULPT:
|
case (int)ScriptBaseClass.PRIM_TYPE_SCULPT:
|
||||||
|
@ -7165,8 +7173,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
|
|
||||||
string map = rules.Data[idx++].ToString();
|
string map = rules.Data[idx++].ToString();
|
||||||
face = (int)rules.GetLSLIntegerItem(idx++); // type
|
face = (int)rules.GetLSLIntegerItem(idx++); // type
|
||||||
part.Shape.PathCurve = (byte)Extrusion.Curve1;
|
SetPrimitiveShapeParams(part, map, face, (byte)Extrusion.Curve1);
|
||||||
SetPrimitiveShapeParams(part, map, face);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -182,6 +182,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
|
||||||
Vector3.Zero) { Name = obj1Name, UUID = objUuid };
|
Vector3.Zero) { Name = obj1Name, UUID = objUuid };
|
||||||
Assert.That(scene.AddNewSceneObject(new SceneObjectGroup(part1), false), Is.True);
|
Assert.That(scene.AddNewSceneObject(new SceneObjectGroup(part1), false), Is.True);
|
||||||
|
|
||||||
|
// Note that prim hollow check is passed with the other prim params in order to allow the
|
||||||
|
// specification of a different check value from the prim param. A cylinder, prism, sphere,
|
||||||
|
// torus or ring, with a hole shape of square, is limited to a hollow of 70%. Test 5 below
|
||||||
|
// specifies a value of 95% and checks to see if 70% was properly returned.
|
||||||
|
|
||||||
// Test a sphere.
|
// Test a sphere.
|
||||||
CheckllSetPrimitiveParams(
|
CheckllSetPrimitiveParams(
|
||||||
"test 1", // Prim test identification string
|
"test 1", // Prim test identification string
|
||||||
|
@ -191,7 +196,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
|
||||||
new LSL_Types.Vector3(0.0d, 0.075d, 0.0d), // Prim cut
|
new LSL_Types.Vector3(0.0d, 0.075d, 0.0d), // Prim cut
|
||||||
0.80d, // Prim hollow
|
0.80d, // Prim hollow
|
||||||
new LSL_Types.Vector3(0.0d, 0.0d, 0.0d), // Prim twist
|
new LSL_Types.Vector3(0.0d, 0.0d, 0.0d), // Prim twist
|
||||||
new LSL_Types.Vector3(0.32d, 0.76d, 0.0d)); // Prim dimple
|
new LSL_Types.Vector3(0.32d, 0.76d, 0.0d), // Prim dimple
|
||||||
|
0.80d); // Prim hollow check
|
||||||
|
|
||||||
// Test a prism.
|
// Test a prism.
|
||||||
CheckllSetPrimitiveParams(
|
CheckllSetPrimitiveParams(
|
||||||
|
@ -203,7 +209,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
|
||||||
0.90d, // Prim hollow
|
0.90d, // Prim hollow
|
||||||
new LSL_Types.Vector3(0.0d, 0.0d, 0.0d), // Prim twist
|
new LSL_Types.Vector3(0.0d, 0.0d, 0.0d), // Prim twist
|
||||||
new LSL_Types.Vector3(2.0d, 1.0d, 0.0d), // Prim taper
|
new LSL_Types.Vector3(2.0d, 1.0d, 0.0d), // Prim taper
|
||||||
new LSL_Types.Vector3(0.0d, 0.0d, 0.0d)); // Prim shear
|
new LSL_Types.Vector3(0.0d, 0.0d, 0.0d), // Prim shear
|
||||||
|
0.90d); // Prim hollow check
|
||||||
|
|
||||||
// Test a box.
|
// Test a box.
|
||||||
CheckllSetPrimitiveParams(
|
CheckllSetPrimitiveParams(
|
||||||
|
@ -212,10 +219,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
|
||||||
ScriptBaseClass.PRIM_TYPE_BOX, // Prim type
|
ScriptBaseClass.PRIM_TYPE_BOX, // Prim type
|
||||||
ScriptBaseClass.PRIM_HOLE_TRIANGLE, // Prim hole type
|
ScriptBaseClass.PRIM_HOLE_TRIANGLE, // Prim hole type
|
||||||
new LSL_Types.Vector3(0.0d, 1.0d, 0.0d), // Prim cut
|
new LSL_Types.Vector3(0.0d, 1.0d, 0.0d), // Prim cut
|
||||||
0.90d, // Prim hollow
|
0.95d, // Prim hollow
|
||||||
new LSL_Types.Vector3(1.0d, 0.0d, 0.0d), // Prim twist
|
new LSL_Types.Vector3(1.0d, 0.0d, 0.0d), // Prim twist
|
||||||
new LSL_Types.Vector3(1.0d, 1.0d, 0.0d), // Prim taper
|
new LSL_Types.Vector3(1.0d, 1.0d, 0.0d), // Prim taper
|
||||||
new LSL_Types.Vector3(0.0d, 0.0d, 0.0d)); // Prim shear
|
new LSL_Types.Vector3(0.0d, 0.0d, 0.0d), // Prim shear
|
||||||
|
0.95d); // Prim hollow check
|
||||||
|
|
||||||
// Test a tube.
|
// Test a tube.
|
||||||
CheckllSetPrimitiveParams(
|
CheckllSetPrimitiveParams(
|
||||||
|
@ -232,13 +240,36 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
|
||||||
new LSL_Types.Vector3(-1.0d, 1.0d, 0.0d), // Prim taper
|
new LSL_Types.Vector3(-1.0d, 1.0d, 0.0d), // Prim taper
|
||||||
1.0d, // Prim revolutions
|
1.0d, // Prim revolutions
|
||||||
1.0d, // Prim radius
|
1.0d, // Prim radius
|
||||||
0.0d); // Prim skew
|
0.0d, // Prim skew
|
||||||
|
0.00d); // Prim hollow check
|
||||||
|
|
||||||
|
// Test a prism.
|
||||||
|
CheckllSetPrimitiveParams(
|
||||||
|
"test 5", // Prim test identification string
|
||||||
|
new LSL_Types.Vector3(3.5d, 3.5d, 3.5d), // Prim size
|
||||||
|
ScriptBaseClass.PRIM_TYPE_PRISM, // Prim type
|
||||||
|
ScriptBaseClass.PRIM_HOLE_SQUARE, // Prim hole type
|
||||||
|
new LSL_Types.Vector3(0.0d, 1.0d, 0.0d), // Prim cut
|
||||||
|
0.95d, // Prim hollow
|
||||||
|
new LSL_Types.Vector3(0.0d, 0.0d, 0.0d), // Prim twist
|
||||||
|
new LSL_Types.Vector3(2.0d, 1.0d, 0.0d), // Prim taper
|
||||||
|
new LSL_Types.Vector3(0.0d, 0.0d, 0.0d), // Prim shear
|
||||||
|
0.70d); // Prim hollow check
|
||||||
|
|
||||||
|
// Test a sculpted prim.
|
||||||
|
CheckllSetPrimitiveParams(
|
||||||
|
"test 6", // Prim test identification string
|
||||||
|
new LSL_Types.Vector3(2.0d, 2.0d, 2.0d), // Prim size
|
||||||
|
ScriptBaseClass.PRIM_TYPE_SCULPT, // Prim type
|
||||||
|
"be293869-d0d9-0a69-5989-ad27f1946fd4", // Prim map
|
||||||
|
ScriptBaseClass.PRIM_SCULPT_TYPE_SPHERE); // Prim sculpt type
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set prim params for a box, cylinder or prism and check results.
|
// Set prim params for a box, cylinder or prism and check results.
|
||||||
public void CheckllSetPrimitiveParams(string primTest,
|
public void CheckllSetPrimitiveParams(string primTest,
|
||||||
LSL_Types.Vector3 primSize, int primType, int primHoleType, LSL_Types.Vector3 primCut,
|
LSL_Types.Vector3 primSize, int primType, int primHoleType, LSL_Types.Vector3 primCut,
|
||||||
double primHollow, LSL_Types.Vector3 primTwist, LSL_Types.Vector3 primTaper, LSL_Types.Vector3 primShear)
|
double primHollow, LSL_Types.Vector3 primTwist, LSL_Types.Vector3 primTaper, LSL_Types.Vector3 primShear,
|
||||||
|
double primHollowCheck)
|
||||||
{
|
{
|
||||||
// Set the prim params.
|
// Set the prim params.
|
||||||
m_lslApi.llSetPrimitiveParams(new LSL_Types.list(ScriptBaseClass.PRIM_SIZE, primSize,
|
m_lslApi.llSetPrimitiveParams(new LSL_Types.list(ScriptBaseClass.PRIM_SIZE, primSize,
|
||||||
|
@ -256,7 +287,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
|
||||||
Assert.AreEqual(primHoleType, m_lslApi.llList2Integer(primParams, 2),
|
Assert.AreEqual(primHoleType, m_lslApi.llList2Integer(primParams, 2),
|
||||||
"TestllSetPrimitiveParams " + primTest + " prim hole default check fail");
|
"TestllSetPrimitiveParams " + primTest + " prim hole default check fail");
|
||||||
CheckllSetPrimitiveParamsVector(primCut, m_lslApi.llList2Vector(primParams, 3), primTest + " prim cut");
|
CheckllSetPrimitiveParamsVector(primCut, m_lslApi.llList2Vector(primParams, 3), primTest + " prim cut");
|
||||||
Assert.AreEqual(primHollow, m_lslApi.llList2Float(primParams, 4), FLOAT_ACCURACY,
|
Assert.AreEqual(primHollowCheck, m_lslApi.llList2Float(primParams, 4), FLOAT_ACCURACY,
|
||||||
"TestllSetPrimitiveParams " + primTest + " prim hollow check fail");
|
"TestllSetPrimitiveParams " + primTest + " prim hollow check fail");
|
||||||
CheckllSetPrimitiveParamsVector(primTwist, m_lslApi.llList2Vector(primParams, 5), primTest + " prim twist");
|
CheckllSetPrimitiveParamsVector(primTwist, m_lslApi.llList2Vector(primParams, 5), primTest + " prim twist");
|
||||||
CheckllSetPrimitiveParamsVector(primTaper, m_lslApi.llList2Vector(primParams, 6), primTest + " prim taper");
|
CheckllSetPrimitiveParamsVector(primTaper, m_lslApi.llList2Vector(primParams, 6), primTest + " prim taper");
|
||||||
|
@ -266,7 +297,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
|
||||||
// Set prim params for a sphere and check results.
|
// Set prim params for a sphere and check results.
|
||||||
public void CheckllSetPrimitiveParams(string primTest,
|
public void CheckllSetPrimitiveParams(string primTest,
|
||||||
LSL_Types.Vector3 primSize, int primType, int primHoleType, LSL_Types.Vector3 primCut,
|
LSL_Types.Vector3 primSize, int primType, int primHoleType, LSL_Types.Vector3 primCut,
|
||||||
double primHollow, LSL_Types.Vector3 primTwist, LSL_Types.Vector3 primDimple)
|
double primHollow, LSL_Types.Vector3 primTwist, LSL_Types.Vector3 primDimple, double primHollowCheck)
|
||||||
{
|
{
|
||||||
// Set the prim params.
|
// Set the prim params.
|
||||||
m_lslApi.llSetPrimitiveParams(new LSL_Types.list(ScriptBaseClass.PRIM_SIZE, primSize,
|
m_lslApi.llSetPrimitiveParams(new LSL_Types.list(ScriptBaseClass.PRIM_SIZE, primSize,
|
||||||
|
@ -284,7 +315,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
|
||||||
Assert.AreEqual(primHoleType, m_lslApi.llList2Integer(primParams, 2),
|
Assert.AreEqual(primHoleType, m_lslApi.llList2Integer(primParams, 2),
|
||||||
"TestllSetPrimitiveParams " + primTest + " prim hole default check fail");
|
"TestllSetPrimitiveParams " + primTest + " prim hole default check fail");
|
||||||
CheckllSetPrimitiveParamsVector(primCut, m_lslApi.llList2Vector(primParams, 3), primTest + " prim cut");
|
CheckllSetPrimitiveParamsVector(primCut, m_lslApi.llList2Vector(primParams, 3), primTest + " prim cut");
|
||||||
Assert.AreEqual(primHollow, m_lslApi.llList2Float(primParams, 4), FLOAT_ACCURACY,
|
Assert.AreEqual(primHollowCheck, m_lslApi.llList2Float(primParams, 4), FLOAT_ACCURACY,
|
||||||
"TestllSetPrimitiveParams " + primTest + " prim hollow check fail");
|
"TestllSetPrimitiveParams " + primTest + " prim hollow check fail");
|
||||||
CheckllSetPrimitiveParamsVector(primTwist, m_lslApi.llList2Vector(primParams, 5), primTest + " prim twist");
|
CheckllSetPrimitiveParamsVector(primTwist, m_lslApi.llList2Vector(primParams, 5), primTest + " prim twist");
|
||||||
CheckllSetPrimitiveParamsVector(primDimple, m_lslApi.llList2Vector(primParams, 6), primTest + " prim dimple");
|
CheckllSetPrimitiveParamsVector(primDimple, m_lslApi.llList2Vector(primParams, 6), primTest + " prim dimple");
|
||||||
|
@ -295,7 +326,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
|
||||||
LSL_Types.Vector3 primSize, int primType, int primHoleType, LSL_Types.Vector3 primCut,
|
LSL_Types.Vector3 primSize, int primType, int primHoleType, LSL_Types.Vector3 primCut,
|
||||||
double primHollow, LSL_Types.Vector3 primTwist, LSL_Types.Vector3 primHoleSize,
|
double primHollow, LSL_Types.Vector3 primTwist, LSL_Types.Vector3 primHoleSize,
|
||||||
LSL_Types.Vector3 primShear, LSL_Types.Vector3 primProfCut, LSL_Types.Vector3 primTaper,
|
LSL_Types.Vector3 primShear, LSL_Types.Vector3 primProfCut, LSL_Types.Vector3 primTaper,
|
||||||
double primRev, double primRadius, double primSkew)
|
double primRev, double primRadius, double primSkew, double primHollowCheck)
|
||||||
{
|
{
|
||||||
// Set the prim params.
|
// Set the prim params.
|
||||||
m_lslApi.llSetPrimitiveParams(new LSL_Types.list(ScriptBaseClass.PRIM_SIZE, primSize,
|
m_lslApi.llSetPrimitiveParams(new LSL_Types.list(ScriptBaseClass.PRIM_SIZE, primSize,
|
||||||
|
@ -314,7 +345,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
|
||||||
Assert.AreEqual(primHoleType, m_lslApi.llList2Integer(primParams, 2),
|
Assert.AreEqual(primHoleType, m_lslApi.llList2Integer(primParams, 2),
|
||||||
"TestllSetPrimitiveParams " + primTest + " prim hole default check fail");
|
"TestllSetPrimitiveParams " + primTest + " prim hole default check fail");
|
||||||
CheckllSetPrimitiveParamsVector(primCut, m_lslApi.llList2Vector(primParams, 3), primTest + " prim cut");
|
CheckllSetPrimitiveParamsVector(primCut, m_lslApi.llList2Vector(primParams, 3), primTest + " prim cut");
|
||||||
Assert.AreEqual(primHollow, m_lslApi.llList2Float(primParams, 4), FLOAT_ACCURACY,
|
Assert.AreEqual(primHollowCheck, m_lslApi.llList2Float(primParams, 4), FLOAT_ACCURACY,
|
||||||
"TestllSetPrimitiveParams " + primTest + " prim hollow check fail");
|
"TestllSetPrimitiveParams " + primTest + " prim hollow check fail");
|
||||||
CheckllSetPrimitiveParamsVector(primTwist, m_lslApi.llList2Vector(primParams, 5), primTest + " prim twist");
|
CheckllSetPrimitiveParamsVector(primTwist, m_lslApi.llList2Vector(primParams, 5), primTest + " prim twist");
|
||||||
CheckllSetPrimitiveParamsVector(primHoleSize, m_lslApi.llList2Vector(primParams, 6), primTest + " prim hole size");
|
CheckllSetPrimitiveParamsVector(primHoleSize, m_lslApi.llList2Vector(primParams, 6), primTest + " prim hole size");
|
||||||
|
@ -329,6 +360,28 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
|
||||||
"TestllSetPrimitiveParams " + primTest + " prim skew fail");
|
"TestllSetPrimitiveParams " + primTest + " prim skew fail");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Set prim params for a sculpted prim and check results.
|
||||||
|
public void CheckllSetPrimitiveParams(string primTest,
|
||||||
|
LSL_Types.Vector3 primSize, int primType, string primMap, int primSculptType)
|
||||||
|
{
|
||||||
|
// Set the prim params.
|
||||||
|
m_lslApi.llSetPrimitiveParams(new LSL_Types.list(ScriptBaseClass.PRIM_SIZE, primSize,
|
||||||
|
ScriptBaseClass.PRIM_TYPE, primType, primMap, primSculptType));
|
||||||
|
|
||||||
|
// Get params for prim to validate settings.
|
||||||
|
LSL_Types.list primParams =
|
||||||
|
m_lslApi.llGetPrimitiveParams(new LSL_Types.list(ScriptBaseClass.PRIM_SIZE, ScriptBaseClass.PRIM_TYPE));
|
||||||
|
|
||||||
|
// Validate settings.
|
||||||
|
CheckllSetPrimitiveParamsVector(primSize, m_lslApi.llList2Vector(primParams, 0), primTest + " prim size");
|
||||||
|
Assert.AreEqual(primType, m_lslApi.llList2Integer(primParams, 1),
|
||||||
|
"TestllSetPrimitiveParams " + primTest + " prim type check fail");
|
||||||
|
Assert.AreEqual(primMap, (string)m_lslApi.llList2String(primParams, 2),
|
||||||
|
"TestllSetPrimitiveParams " + primTest + " prim map check fail");
|
||||||
|
Assert.AreEqual(primSculptType, m_lslApi.llList2Integer(primParams, 3),
|
||||||
|
"TestllSetPrimitiveParams " + primTest + " prim type scuplt check fail");
|
||||||
|
}
|
||||||
|
|
||||||
public void CheckllSetPrimitiveParamsVector(LSL_Types.Vector3 vecCheck, LSL_Types.Vector3 vecReturned, string msg)
|
public void CheckllSetPrimitiveParamsVector(LSL_Types.Vector3 vecCheck, LSL_Types.Vector3 vecReturned, string msg)
|
||||||
{
|
{
|
||||||
// Check each vector component against expected result.
|
// Check each vector component against expected result.
|
||||||
|
|
Loading…
Reference in New Issue